﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace B303Langf.Scanner
{
   public static class Keywords
   {
      public static readonly Dictionary<string, TokenKind> Spellings = new Dictionary<string, TokenKind>()
      {
         { "<identifier>", TokenKind.Identifier },
         { "<integerliteral>", TokenKind.IntegerLiteral },
         { "<stringliteral>", TokenKind.CharArrayLiteral },
         { "<eot>", TokenKind.EndOfTokens },
         
         { "[", TokenKind.BlockBegin },
         { "]", TokenKind.BlockEnd },
         { "offer", TokenKind.Return },
         { "when", TokenKind.If },
         { "aslongass", TokenKind.While },
         { "dejavu", TokenKind.For },
         { "?", TokenKind.Terminator },
         { ",", TokenKind.Comma },
         { "esle", TokenKind.Else },
         { "<", TokenKind.ArrayIndicatorBegin },
         { ">", TokenKind.ArrayIndicatorEnd },
         { "(", TokenKind.ParanthesisBegin },
         { ")", TokenKind.ParanthesisEnd },
         
         { "quantity", TokenKind.IntegerType },
         { "symbol", TokenKind.CharType },
         { "pool", TokenKind.BoolType },
         { "nothing", TokenKind.Void },
         
         { "full", TokenKind.True },
         { "empty", TokenKind.False },
         
         { "plus", TokenKind.PlusOperator },
         { "minus", TokenKind.MinusOperator },
         { "multiply", TokenKind.MultiplyOperator },
         { "divide", TokenKind.DivisionOperator },
         { "is", TokenKind.AssignOperator },
         { "same", TokenKind.EqualsOperator },
         { "notsame", TokenKind.NotEqualsOperator },
         { "less", TokenKind.LessThanOperator },
         { "lessorsame", TokenKind.LessThanOrEqualsOperator },
         { "more", TokenKind.GreaterThanOperator },
         { "moreorsame", TokenKind.GreaterThanOrEqualsOperator },
         { "and", TokenKind.ConditionalAndOperator },
         { "or", TokenKind.ConditionalOrOperator },

         { "input", TokenKind.Input },
         { "output", TokenKind.Output }
      };

   }
}
